package com.xh.web.mapper;

import com.xh.web.domain.DColumn;
import com.xh.web.domain.vo.ColumnVo;
import com.xh.web.domain.vo.ExportColumnVo;
import com.xh.web.domain.vo.TableVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 字段Mapper接口
 *
 * @author fulan
 * @date 2020-09-04
 */
@Mapper
public interface DColumnMapper
{


    /**
     * 查询字段列表
     *
     * @param dColumn 字段
     * @return
     */
    public List<DColumn> selectDColumnList(DColumn dColumn);



    /**
     * 根据id进行查询
     *
     * @param
     * @return
     */
    public DColumn selectColumnById(String id);


    /**
     * 新增字段
     *
     * @param dColumn 字段
     * @return 结果
     */
    public int insertDColumn(DColumn dColumn);

    /**
     * 修改字段
     *
     * @param dColumn 字段
     * @return 结果
     */
    public int updateDColumn(DColumn dColumn);

    /**
     * 删除字段
     *
     * @param id 字段ID
     * @return 结果
     */
    public int deleteDColumnById(String id);

    /**
     * 根据模板ID删除字段
     *
     */
    public int deleteDColumnByTemplateId(String[] ids);

    /**
     * 批量删除字段
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteDColumnByIds(String[] ids);


    /**
     * 根据字段code查询
     *
     * @param
     * @return 结果
     */
    public DColumn selectColumnByCode(@Param("columnCode") String columnCode,@Param("tableId") String tableId);



    //查询导出的表
    public List<TableVo> selectTables(ColumnVo columnVo);

    //根据表ids查询column对象
    public List<ExportColumnVo> selectExportColumn(@Param("tableIds") String[] tableIds);

    //批量插入
    public int insertDColumnListOfficial (List<DColumn> columnList);

    //根据表ids查询columnId
    public String[] selectColumnIdList(String[] tableIds);

//根据表id进行查询
   public List<DColumn> selectByTableId(String tableId);

    /**
     * 根据表ID删除所有的列
     * @param projectId
     * @return
     */
    public int deleteAllColumnByProjectId(@Param("projectId")String projectId,@Param("tableCode")String tableCode);

    //根据表projectId查询column
    public List<ColumnVo> selectDProjectById(ColumnVo columnVo);

    public List<DColumn> selectByTemplateId(String templateId);

    public int selectColumnCount(@Param("tableId")String tableId);

}
